#位置参数
def f1(a,b,c):
    print(a,b,c)
f1(10,20,30)
#f1(10,20)       位置参数不匹配，报错

#默认值参数
def f2(a,b,c=30,d=40) :      #默认值参数必须位于普通位置参数后面
    print(a,b,c,d)
f2(10,20)
f2(10,20,3)
f2(10,20,3,4)


#命名参数
def f3(a,b,c):
    print(a,b,c)

f3(10,20,30)        #位置参数
f3(c=30,a=20,b=10)      #命名参数

#可变参数
def f4(a,b,*c):     #一个*号是元组
    print(a,b,c)

f4(10,20,30,40,50,60)

def f5(a,b,**c):     #两个*号是字典
    print(a,b,c)

f5(10,20,name='duyongchuan',age=20,salary=20000)

#强制命名参数
def f5(*a,b,c):
    print(a,b,c)
f5(2,3,4,5,b=6,c=7)

#f1(2,3,4)   #会报错。由于a是可变参数，将2,3,4全部收集。造成b和c没有赋值。